#!/bin/bash

#
# 每2分钟检查一次 /root/vlog_video_application/video_handler 进程是否存活
# 如果正在运行，不做任何处理；如果没有运行，则启动它
#

# 指定程序 elf 位置，并切换到对应目录
local_path=/root/vlog_video_application
cd ${local_path}

# 指定 elf 文件名
process_name="video_handler"

#
# 检查进程是否存活，如果正在运行，不做任何处理；如果没有运行，则启动它
#
function restart_program(){
    if pgrep -f "$process_name" > /dev/null; then
        # 这是一条没有意义的赋值，仅仅是为了防止 if 逻辑内部没有语句
        a = "1"

        # 将检测结果记录到 checkvideo.txt 文件中
        # echo "$process_name 进程正在运行中" >> checkvideo.txt
    else
        # 将检测结果记录到 checkvideo.txt 文件中
        # echo "$process_name 进程未运行" >> checkvideo.

        # 如果进程没有运行，则通过下面的命令启动进程
        # nohup 用来忽略挂起信号
        # > /dev/null 2>&1 把标准输出和标准错误输出重定向到 /dev/null
        # & 将进程放到后台执行
        nohup ./video_handler > /dev/null 2>&1 &
    fi
}

# 判断条件 [ 1 -eq 1 ] 永远成立，因此这里是死循环
while [ 1 -eq 1 ]
do
    # 每 2 分钟执行一次 restart_program 函数
    restart_program
    sleep 120
done
